The Small Computer System Interface (SCSI) may be utilized with storage array controllers. The storage array controllers may utilize Redundant Array of Inexpensive Disks (RAID) algorithms to organize information across a number of different drives. In SCSI, an initiator accesses Logical Units (LUs) in a target. In the SCSI protocol, the LUs are referred to with a Logical Unit Number (LUN). The initiator may be hosted in a server, and the target may be hosted in a storage array to which the server is connected. Thus, storage array controllers may utilize RAID algorithms to organize physical drives into LUs.
Storage array hardware provides connectivity between the controllers and the physical drives. The drives may be enclosed in the same hardware as the controllers or in an externally connected drive tray. Fibre Channel and SAS are examples of commonly utilized interconnections between controller modules and drives. A server may be connected to a storage controller via a Host Bus Adapter (HBA). The HBA may be directly connected to the storage array via point-to-point connections, or it may be connected over a Storage Array Network (SAN). Again, Fibre Channel, SAS, SATA, or another interconnect may be utilized between the host and the storage array controllers.
In one non-redundant configuration, two storage array controllers may be utilized to access two LUNs defined in a storage array. In this configuration, failure of any of the hardware components in the I/O path may cause a loss of data in the user application running in the host. A combination of redundant hardware components and connectivity along with fail over software may be utilized to provide uninterrupted host connectivity to a SCSI target, even during some hardware component failures. For example, both I/O path redundancy and storage array controller redundancy may be utilized to access LUs in a storage array. However, if multiple failures occur in the same path or at the same level, I/Os to the LUN may still fail. Additionally, this configuration requires additional hardware and software.
Hypervisors provide Virtual Machine (VM) technology and capabilities which allow multiple systems (hardware, operating system, and software applications) to execute on a single hardware platform. This effectively allows consolidation of several individual systems onto a single hardware platform. The VMs are managed by a Virtual Machine manager (VMM) (the hypervisor), which sits between the VMs and the actual hardware. Utilizing a hypervisor and two VMs, it is possible to consolidate the server OS and applications into one VM and the storage array controller firmware into the other VM. However, this configuration lacks the resilience to failures of the previously described redundant configuration (which requires more hardware and software). Specifically, this configuration may include only one RAID application instance.